/*
 * This source file is part of DVGEditor.
 *
 * Copyright (c) Pavel Shchelkun 2012 DVGEditor
 * <http://code.google.com/p/dataviewer/>
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to deal in the Software without restriction, including
 * without limitation the rights to use, copy, modify, merge, publish,
 * distribute, sublicense, and/or sell copies of the Software, and to
 * permit persons to whom the Software is furnished to do so, subject to
 * the following conditions:
 *
 * The above copyright notice and this permission notice shall be included
 * in all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
 * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
 * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 */
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include "types.h"

namespace Ui {
class MainWindow;
}

class EditorWidget;

class MainWindow : public QMainWindow
{
    Q_OBJECT
    
public:
    enum MODE { MODE_CURSOR, MODE_RECT, MODE_POLYGON, MODE_ELLIPSE, MODE_SECTOR, MODE_HAND };

    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private:
    void setEncoding();
    void connectActions();
    void setActiveButton(MODE mode);
    void setDocumentName(const QString& name);
    
private:
    Ui::MainWindow *ui;
    EditorWidget   *m_pEditor;
    MODE            m_currentMode;
    QMenu          *m_pEditContextMenu;
    QMenu          *m_pToolContextMenu;
    QLabel         *m_pLabelObjectName;
    QString         m_documentName;

protected:
    void closeEvent(QCloseEvent *event);

private slots:
    void clickedNew();
    void clickedOpen();
    void clickedSave();
    void clickedExit();
    void clickedCursor();
    void clickedHand();
    void clickedDelete();
    void clickedToFront();
    void clickedToBack();
    void clickedObjectName();
    void clickedRemoveNode();
    void clickedDuplicateNode();
    void clickedPalette();
    void clickedBackground();
    void clickedRect();
    void clickedPolygon();
    void clickedEllipse();
    void clickedSector();
    void clickedAbout();
    void clickedAboutQt();

    void modeChanged(int mode);
};

#endif // MAINWINDOW_H
